home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / TANK11.ZIP / SOURCE.ZIP / DOTANKS.C < prev    next >
Encoding:
C/C++ Source or Header  |  1993-01-18  |  2.6 KB  |  112 lines

  1. /* DOTANKS:  Handle movement, collision of tanks */
  2. #include "tankdefs.h"
  3. #include "types.h"
  4. #include "extern.h"
  5. #include "stk.h"
  6. #include "joy.h"
  7.  
  8. extern joy_stick joystick;
  9. extern int JoyStickNumber;
  10. extern int StickOnTank;
  11.  
  12. void dotanks()
  13. {
  14.     int i;
  15.     int tx,ty;
  16.     tankRec *t;
  17.     shotrec *s;
  18.  
  19.     if (StickOnTank>-1) {
  20.         read_stick(JoyStickNumber, &joystick);
  21.         gr_keys[tank[StickOnTank].upk]=JoyStickUp(joystick);
  22.         gr_keys[tank[StickOnTank].downk]=JoyStickDown(joystick);
  23.         gr_keys[tank[StickOnTank].leftk]=JoyStickLeft(joystick);
  24.         gr_keys[tank[StickOnTank].rightk]=JoyStickRight(joystick);
  25.         gr_keys[tank[StickOnTank].firek]=JoyButton1(joystick)|JoyButton2(joystick);
  26.     }
  27.  
  28.     for ( i=0; i<NumTanks; i++) {
  29.         t=&tank[i];
  30.         if (gr_keys[t->upk]) {
  31.             if (t->dir==UP) {
  32.                 t->speed--;
  33.                 if (!t->speed) {
  34.                     t->speed=TankSpeed;
  35.                     tx=t->x; ty=t->y-1;
  36.                     if (!hit(tx,ty,TXDIM,TYDIM,UP)) {
  37.                         drawit(t->x,t->y,TXDIM,TYDIM,TankEraseBM);
  38.                         drawit(tx,ty,TXDIM,TYDIM,t->pic[UP]);
  39.                         t->y=ty;
  40.                     }
  41.                     else ;/* hit */
  42.                 }
  43.             }
  44.             else {
  45.                 drawit(t->x,t->y,TXDIM,TYDIM,TankEraseBM);
  46.                 drawit(t->x,t->y,TXDIM,TYDIM,t->pic[UP]);
  47.                 t->dir=UP;
  48.                 t->speed=TankSpeed;
  49.             }
  50.         }
  51.         else if (gr_keys[t->downk]) {
  52.             if (t->dir==DOWN) {
  53.                 t->speed--;
  54.                 if (!t->speed) {
  55.                     t->speed=TankSpeed;
  56.                     tx=t->x; ty=t->y+1;
  57.                     if (!hit(tx,ty,TXDIM,TYDIM,DOWN)) {
  58.                         drawit(t->x,t->y,TXDIM,TYDIM,TankEraseBM);
  59.                         drawit(tx,ty,TXDIM,TYDIM,t->pic[DOWN]);
  60.                         t->y=ty;
  61.                     }
  62.                     else ;/* hit */
  63.                 }
  64.             }
  65.             else {
  66.                 drawit(t->x,t->y,TXDIM,TYDIM,TankEraseBM);
  67.                 drawit(t->x,t->y,TXDIM,TYDIM,t->pic[DOWN]);
  68.                 t->dir=DOWN;
  69.             }
  70.         }
  71.         else if (gr_keys[t->rightk]) {
  72.             if (t->dir==RIGHT) {
  73.                 t->speed--;
  74.                 if (!t->speed) {
  75.                     t->speed=TankSpeed;
  76.                     tx=t->x+1; ty=t->y;
  77.                     if (!hit(tx,ty,TXDIM,TYDIM,RIGHT)) {
  78.                         drawit(t->x,t->y,TXDIM,TYDIM,TankEraseBM);
  79.                         drawit(tx,ty,TXDIM,TYDIM,t->pic[RIGHT]);
  80.                         t->x=tx;
  81.                     }
  82.                     else ;/* hit */
  83.                 }
  84.             }
  85.             else {
  86.                 drawit(t->x,t->y,TXDIM,TYDIM,TankEraseBM);
  87.                 drawit(t->x,t->y,TXDIM,TYDIM,t->pic[RIGHT]);
  88.                 t->dir=RIGHT;
  89.             }
  90.         }
  91.         else if (gr_keys[t->leftk]) {
  92.             if (t->dir==LEFT) {
  93.                 t->speed--;
  94.                 if (!t->speed) {
  95.                     t->speed=TankSpeed;
  96.                     tx=t->x-1; ty=t->y;
  97.                     if (!hit(tx,ty,TXDIM,TYDIM,LEFT)) {
  98.                         drawit(t->x,t->y,TXDIM,TYDIM,TankEraseBM);
  99.                         drawit(tx,ty,TXDIM,TYDIM,t->pic[LEFT]);
  100.                         t->x=tx;
  101.                     }
  102.                     else ;/* hit */
  103.                 }
  104.             }
  105.             else {
  106.                 drawit(t->x,t->y,TXDIM,TYDIM,TankEraseBM);
  107.                 drawit(t->x,t->y,TXDIM,TYDIM,t->pic[LEFT]);
  108.                 t->dir=LEFT;
  109.             }
  110.         }
  111.   } /* for */
  112. }